// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database()
const music_history = db.collection("music_history")

// 云函数入口函数
//添加音乐播放记录
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const songInfo = event.songInfo
  const result = await music_history
    .where({
      _openid: wxContext.OPENID
    })
    .get()
  //如果用户是通过小程序第一次听歌
  if (result.data.length === 0) {
    music_history
      .add({
        data: { history: [songInfo] }
      })
    return
  }
  //用户已经有听歌记录
  //判断当前这首歌之前是否有过记录，有记录则替换掉
  let history = result.data[0].history
  const id = songInfo.id
  const index = history.findIndex(item => item.id === id)
  if (index !== -1) {
    //之前听过,删除掉之前的，重新添加到头部
    history.splice(index, 1)
  }
  history.unshift(songInfo)
  //最多记录100条，如果超过100条删除最后一条
  if (history.length > 100) {
    history.pop()
  }
  music_history
    .doc(result.data[0]._id)
    .update({
      data: { history }
    })
}
